package com.wjerp.tplus.server.domain.service;

import com.wjerp.tplus.server.api.request.QueryCompanyListRequest;
import com.wjerp.tplus.server.api.request.UpdateCompanyInfoRequest;
import com.wjerp.tplus.server.api.response.CompanyInfoResponse;
import com.wjerp.tplus.server.api.response.PageDataResponse;
import com.wjerp.tplus.server.common.exception.ServiceException;
import com.wjerp.tplus.server.domain.entity.CompanyInfo;

import java.util.List;

/**
 * 公司信息业务实现接口
 * @author lishuailei
 */
public interface CompanyService {


    /**
     * 新增或更新公司信息
     * @param userDisplayId 显示用户ID
     * @param request 参数信息
     */
    void addOrUpdateCompanyInfo(String userDisplayId, UpdateCompanyInfoRequest request) throws ServiceException;

    /**
     * 根据公司编码获取公司信息
     * @param companyCode 公司编码
     * @return 公司信息
     */
    CompanyInfoResponse loadCompanyInfoByCompanyCode(String companyCode);

    /**
     * 公司信息查询（分页）
     * @param request 查询参数
     * @return 分页信息
     */
    PageDataResponse loadCompanyList(QueryCompanyListRequest request);

    /**
     * 获取用户所属于的企业信息
     * @param userCode 用户编码
     * @return 企业信息
     */
    CompanyInfo loadCompanyInfoByUserCode(String userCode);

    /**
     * 根据授权码获取企业信息
     * @param authCode 授权码
     * @return 企业信息
     */
    CompanyInfo loadCompanyInfoByAuthCode(String authCode);

    /**
     * 新增企业信息
     * @param companyInfo
     */
    void insertCompanyInfo(CompanyInfo companyInfo);

    /**
     * 根据企业编码列表获取企业信息列表
     * @param companyCodeList 企业编码列表
     * @return 企业信息列表
     */
    List<CompanyInfo> loadCompanyInfoByCompanyCodeList(List<String> companyCodeList);
}
